iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
SideProject30

xv6 解題紀錄:透過實做了解 OS 的運作原理系列 第 2

Day 2: [6.1810 Operating System Engineering] xv6 的環境架設

  • 分享至 

  • xImage
  •  

什麼是 xv6 ?

6.1810 提供了一個教學用的作業系統 xv6,讓學生可以直接修改以及trace程式碼,我認為這非常的讓人興奮,平常雖然每天都在使用作業系統,但也不是很了解 OS 是如何運作的,而這們課程透過 xv6 來把 OS 的原形展露出來,有不懂的地方都可以向原始碼請教。

xv6 的環境架設

這部份的詳細內容都寫在 lab util 中,大致上你會需要一個linux系統(windows 使用者可以用虛擬機, 或是),然後 xv6 會跑在 linux 所架設的虛擬機上

  1. 下載原始碼
$ git clone git://g.csail.mit.edu/xv6-labs-2023
$ cd xv6-labs-2023
$ git checkout util
  1. 安裝架設虛擬機的套件
    Debian based 的安裝方式如下,至於是其他系統的使用者,可以看這裡
$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
  1. compile 程式碼並且讓他跑在虛擬機上
$ make qemu
...
(一大串訊息)
...
xv6 kernel is booting

hart 2 starting
hart 1 starting
init: starting sh
$

到這裡,xv6 已經成功開機了!

  1. 嘗試打個指令
$ ls
.              1 1 1024
..             1 1 1024
README         2 2 2059
xargstest.sh   2 3 93
cat            2 4 24120
echo           2 5 22944
forktest       2 6 13184
grep           2 7 27424
init           2 8 23680
kill           2 9 22904
ln             2 10 22744
ls             2 11 26312
mkdir          2 12 23040
rm             2 13 23032
sh             2 14 41856
stressfs       2 15 23904
usertests      2 16 148312
grind          2 17 38008
wc             2 18 25232
zombie         2 19 22280
console        3 20 0

沒意外了話,會出現以上的畫面

  1. 離開虛擬機
    按下 ctrl+a 放開這兩個鍵之後,再按下 x
$ QEMU: Terminated

就可以離開了

(非必須)將這個 repo 推到自己的 github 上

把程式碼除存到自己的 github 上了話總是方便許多的,不過有些地方需要注意一下
在 github 上新增一個 repo 之後,會到一個頁面寫著:

…or push an existing repository from the command line:

git remote add origin git@github.com:9501sam/xv6-labs-2023.git
git branch -M main
git push -u origin main

直接使用這個指令了話,是沒有辦法 push 上去的,原因在於現在的 origin 已經指向了 git://g.csail.mit.edu/xv6-labs-2023,所以現在會需要先把 origin 改個名子才行:

$ git remote -v                                                                                                   
origin  git://g.csail.mit.edu/xv6-labs-2023 (fetch)
origin  git://g.csail.mit.edu/xv6-labs-2023 (push)
$ git remote rename origin upstream
git remote add origin git@github.com:9501sam/xv6-labs-2023.git
git branch -M main
git push -u origin main

雜談:

最近看了 Threatening the 5G core via PFCP DoS attacks: the case of blocking UAV communications 這篇 paper,在講針對 5G 核網中的 N4 界面(PFCP protocol)的攻擊,目前的想法是先將 paper 中的攻擊重現出來,裡面使用了 Scapy 這個套件,可是我弄了一個下午都還沒弄出來@@。前鎮子我的好友小吉建議我事情卡住時可以先做些其他事情轉移注意力,可能會比鑽牛角尖在一見事情上還要好,因此先來發個鐵人賽,希望等等回去著手時可以看到一些先前沒注意到的事情。


上一篇
Day 1: 參賽動機
系列文
xv6 解題紀錄:透過實做了解 OS 的運作原理2
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言